TP & Analyse de
Données : Qualification de Performance d’un Robot FANUC
Ce rapport présente l’analyse statistique des données de répétabilité (df.csv) d’un robot FANUC.
L’objectif est de qualifier la performance du robot et la fiabilité de notre système de mesure.
Notre démarche se déroule en trois temps :
Valider le Système de Mesure (ANOVA) : Avant de juger le robot, nous devons prouver que nos 3 comparateurs (X, Y, Z) sont interchangeables et ne présentent pas de biais systématique.
Valider les Hypothèses (Normalité) : Nous vérifierons si la distribution des erreurs suit une Loi Normale, ce qui est un prérequis pour de nombreux calculs de capabilité.
Qualifier le Robot (ISO 9283) : Une fois le système de mesure et les hypothèses validés, nous calculerons la répétabilité de position \(RP_L\) pour conclure sur la conformité du robot.
Les données sont lues depuis le fichier df.csv.
# Charger les données (en spécifiant le délimiteur point-virgule)
donnees_brutes <- read_csv("df.csv")
# Sélectionner uniquement les colonnes de mesure X, Y, Z
donnees <- donnees_brutes %>%
select(X, Y, Z)
# Afficher un aperçu des données
kable(head(donnees), caption = "Aperçu des 30 mesures (en mm)")
| X | Y | Z |
|---|---|---|
| -0.0026992 | 0.0004699 | -0.0033961 |
| -0.0090493 | -0.0031616 | -0.0006742 |
| 0.0046711 | 0.0057598 | -0.0040098 |
| 0.0077637 | -0.0065867 | -0.0018683 |
| 0.0067946 | -0.0109647 | -0.0004115 |
| 0.0056585 | -0.0045923 | 0.0013810 |
Objectif : Déterminer si les 3 comparateurs (X, Y, Z) fournissent des mesures statistiquement identiques.
# Mettre les données au format long
donnees_long <- donnees %>%
pivot_longer(cols = c(X, Y, Z), names_to = "Comparateur", values_to = "Mesure")
# Créer le Boxplot
ggplot(donnees_long, aes(x = Comparateur, y = Mesure, fill = Comparateur)) +
geom_boxplot() +
labs(title = "Distribution des Mesures par Comparateur",
y = "Écart mesuré (mm)",
x = "Comparateur") +
theme_minimal()
Analyse visuelle : Le Boxplot montre que les médianes
(le trait gras) des trois comparateurs ne sont pas parfaitement
alignées. Les comparateurs X et Z sont relativement bien centrés en
zéro, tandis que Y n’est pas bien centré. L’ANOVA va nous dire si cet
écart est statistiquement significatif ou simplement dû au hasard.
Nous testons l’hypothèse nulle (\(H_0\)) : “Les moyennes des 3 comparateurs sont égales”
# Réaliser l'ANOVA
modele_anova <- aov(Mesure ~ Comparateur, data = donnees_long)
# Afficher le résumé de l'ANOVA
summary(modele_anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Comparateur 2 0.000242 0.0001212 2.999 0.055 .
## Residuals 87 0.003515 0.0000404
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interprétation de l’ANOVA :La ligne Comparateur nous donne le résultat du test.
La \(p_{value}\) (colonne Pr(>F)) est de 0.055.
Puisque la \(p_{value}\) > 0.055, la \(p_{value}\) n’est pas suffisamment faible pour que nous rejetions l’hypothèse nulle.
Conclusion de l’ANOVA : Il n’y a pas de différence statistiquement significative entre les moyennes des trois comparateurs.
Objectif : Valider l’hypothèse de normalité des données, qui sous-tend l’utilisation de l’ANOVA et des calculs statistiques de capabilité.
# Test de Shapiro-Wilk sur les 3 axes
shapiro_X <- shapiro.test(donnees$X)
shapiro_Y <- shapiro.test(donnees$Y)
shapiro_Z <- shapiro.test(donnees$Z)
# Affichage des résultats
normality_results <- data.frame(
Jeu_de_donnees = c("Axe X", "Axe Y", "Axe Z"),
p_value = c(shapiro_X$p.value, shapiro_Y$p.value, shapiro_Z$p.value)
)
kable(normality_results, caption = "Résultats des Tests de Normalité (Shapiro-Wilk)", digits = 4)
| Jeu_de_donnees | p_value |
|---|---|
| Axe X | 0.7212 |
| Axe Y | 0.0972 |
| Axe Z | 0.1542 |
Interprétation de la Normalité :L’hypothèse nulle (\(H_0\)) du test de Shapiro-Wilk est “Les données suivent une loi normale”.
Pour les axes X, Y, et Z, toutes les \(p_{values}\) sont > 0.05.
Conclusion : Nous considérons que les données sont normalement distribuées.
Le procédé est stable et prévisible.
Objectif : Maintenant que le système de mesure et les hypothèses sont validés, nous pouvons qualifier la performance 3D du robot.
# Créer le graphique 3D interactif
plot_ly(donnees, x = ~X, y = ~Y, z = ~Z, type = 'scatter3d', mode = 'markers',
marker = list(size = 5, color = 'blue', opacity = 0.8)) %>%
layout(title = "Dispersion 3D des 30 Points de Mesure",
scene = list(xaxis = list(title = 'Axe X (mm)'),
yaxis = list(title = 'Axe Y (mm)'),
zaxis = list(title = 'Axe Z (mm)')))
Analyse visuelle : Le nuage de points semble bien réparti, sans point aberrant.
# 1. Calculer le barycentre (position moyenne du nuage de points)
barycentre <- c(mean(donnees$X), mean(donnees$Y), mean(donnees$Z))
# 2. Calculer les distances euclidiennes (l_j) de chaque point au barycentre
distances_l <- sqrt((donnees$X - barycentre[1])^2 + (donnees$Y - barycentre[2])^2 + (donnees$Z - barycentre[3])^2)
# 3. Calculer la moyenne de ces distances (l_bar)
l_bar <- mean(distances_l)
# 4. Calculer l'écart-type de ces distances (S_L)
S_L <- sd(distances_l)
# 5. Appliquer la formule de la norme ISO 9283
RP_L <- l_bar + 3 * S_L
# Afficher les résultats
results <- data.frame(
Indicateur = c("Rayon moyen de dispersion (l_bar)", "Ecart-type des rayons (S_L)", "Répétabilité ISO 9283 (RP_L)"),
Valeur_mm = c(l_bar, S_L, RP_L)
)
kable(results, caption = "Résultats du Calcul de Répétabilité (ISO 9283)", digits = 6)
| Indicateur | Valeur_mm |
|---|---|
| Rayon moyen de dispersion (l_bar) | 0.009400 |
| Ecart-type des rayons (S_L) | 0.005458 |
| Répétabilité ISO 9283 (RP_L) | 0.025773 |
Fiabilité du Système de Mesure : L’analyse ANOVA (p-value = 0.055) a démontré qu’il n’y a aucune différence statistique significative entre les trois comparateurs. Le système de mesure est validé.
Stabilité du Procédé : L’analyse de normalité (toutes \(p_{values}\) > 0.05) montre que les erreurs du robot sont distribuées normalement. Le procédé est stable et prévisible.
Performance du Robot : Le calcul selon la norme ISO 9283 établit la répétabilité de position du robot à : \(RP_L\) = 0.0258mm
Verdict de Conformité : La spécification du constructeur est de ±0.02 mm. Notre mesure statistique \(RP_L\) (0.0258mm), qui représente l’enveloppe de dispersion 3D du robot, est supérieure à cette tolérance.
Conclusion finale : Le robot est déclaré NON CONFORME à sa spécification de répétabilité